++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((++++++++////++++((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((++++++++////++++((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((++++++++////++++((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((++++++++////++++((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++++++++++++++++++////++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++++++++++++++++++////++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++++++++++++++++++////++++++++++++((((((((((((((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++++++++++++++++++////////++++++++++++((((((((((((((((++++((((((((((((++++++++++++////++++++++((((((((((((((((((((((((++++++++////++++++++++++////++++////++++++++++++((((((((((((((((++++((((((((((((++++++++++++////++++++++((((((((((((((((((((((((++++++++////++++++++++++////++++////++++++++++++((((((((((((((((++++((((((((((((++++++++++++////++++++++((((((((((((((((((((((((++++++++////++++++++++++////++++////++++++++++++((((((((((((((((++++((((((((((((++++++++++++////++++++++((((((((((((((((((((((((++++++++////++++++++++++////++++////////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((((((((((((((++++++++////++++++++////++++++++////////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((((((((((((((++++++++////++++++++////++++++++////////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((((((((((((((++++++++////++++++++////++++++++////////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((((((((((((((++++++++////++++++++////++++++++++++++++////++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++++++++++++++////////++++++++++++++++++++////++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++++++++++++++////////++++++++++++++++++++////++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++++++++++++++////////++++++++++++++++++++////++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++++++++++++++////////++++++++++++++++++++++++////////////////////++++++++++++////////++++++++++++////////++++++++++++++++++++++++++++++++++++////////++++++++((((++++++++++++////////////////////++++++++++++////////++++++++++++////////++++++++++++++++++++++++++++++++++++////////++++++++((((++++++++++++////////////////////++++++++++++////////++++++++++++////////++++++++++++++++++++++++++++++++++++////////++++++++((((++++++++++++////////////////////++++++++++++////////++++++++++++////////++++++++++++++++++++++++++++++++++++////////++++++++((((((((++++++++////++++++++++++++++////////////++++++++++++++++++++++++////++++++++++++++++++++++++++++////////++++++++++++((((((((((((++++++++////++++++++++++++++////////////++++++++++++++++++++++++////++++++++++++++++++++++++++++////////++++++++++++((((((((((((++++++++////++++++++++++++++////////////++++++++++++++++++++++++////++++++++++++++++++++++++++++////////++++++++++++((((((((((((++++++++////++++++++++++++++////////////++++++++++++++++++++++++////++++++++++++++++++++++++++++////////++++++++++++((((((((++++++++////++++++++++++++++++++++++////++++++++++++++++((((((((++++++++////++++++++++++++++////////++++++++++++((((((((((((((((++++++++////++++++++++++++++++++++++////++++++++++++++++((((((((++++++++////++++++++++++++++////////++++++++++++((((((((((((((((++++++++////++++++++++++++++++++++++////++++++++++++++++((((((((++++++++////++++++++++++++++////////++++++++++++((((((((((((((((++++++++////++++++++++++++++++++++++////++++++++++++++++((((((((++++++++////++++++++++++++++////////++++++++++++((((((((((((((((++++////////++++((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++////////++++++++++++++++((((((((((((((((++++++++////////++++((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++////////++++++++++++++++((((((((((((((((++++++++////////++++((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++////////++++++++++++++++((((((((((((((((++++++++////////++++((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++////////++++++++++++++++((((((((((((((((++++++++////++++++++((((((((((((((((++++++++////++++((((((((((((((((((((((((++++++++////++++++++++++++++((((((((((((((((((((((((++++++++////++++++++((((((((((((((((++++++++////++++((((((((((((((((((((((((++++++++////++++++++++++++++((((((((((((((((((((((((++++++++////++++++++((((((((((((((((++++++++////++++((((((((((((((((((((((((++++++++////++++++++++++++++((((((((((((((((((((((((++++++++////++++++++((((((((((((((((++++++++////++++((((((((((((((((((((((((++++++++////++++++++++++++++((((((((((((((((((((((((++++////++++++++((((((((((((((((++++++++++++////++++((((((((((((((((((((((((++++++++////////++++++++++++((((((((((((((((((((++++++++////++++++++((((((((((((((((++++++++++++////++++((((((((((((((((((((((((++++++++////////++++++++++++((((((((((((((((((((++++++++////++++++++((((((((((((((((++++++++++++////++++((((((((((((((((((((((((++++++++////////++++++++++++((((((((((((((((((((++++++++////++++++++((((((((((((((((++++++++++++////++++((((((((((((((((((((((((++++++++////////++++++++++++((((((((((((((((((((++++++++////////++++++++((((((((((((++++++++////++++++++++++++++((((((((((((((((++++++++////////////++++++++((((((((((((++++++++++++////////////++++++++((((((((((((++++++++////++++++++++++++++((((((((((((((((++++++++////////////++++++++((((((((((((++++++++++++////////////++++++++((((((((((((++++++++////++++++++++++++++((((((((((((((((++++++++////////////++++++++((((((((((((++++++++++++////////////++++++++((((((((((((++++++++////++++++++++++++++((((((((((((((((++++++++////////////++++++++((((((((((((++++++++++++////++++////++++++++((((((((++++++++++++////++++++++++++++++++++((((((((++++++++++++////++++////////++++++++++++++++++++++++////++++++++////++++++++((((((((++++++++++++////++++++++++++++++++++((((((((++++++++++++////++++////////++++++++++++++++++++++++////++++++++////++++++++((((((((++++++++++++////++++++++++++++++++++((((((((++++++++++++////++++////////++++++++++++++++++++++++////++++++++////++++++++((((((((++++++++++++////++++++++++++++++++++((((((((++++++++++++////++++////////++++++++++++++++++++++++////++++++++++++////++++++++++++++++++++////////////////////++++++++++++++++++++++++++++////++++++++////++++++++++++++++++++////++++++++++++++++////++++++++++++++++++++////////////////////++++++++++++++++++++++++++++////++++++++////++++++++++++++++++++////++++++++++++++++////++++++++++++++++++++////////////////////++++++++++++++++++++++++++++////++++++++////++++++++++++++++++++////++++++++++++++++////++++++++++++++++++++////////////////////++++++++++++++++++++++++++++////++++++++////++++++++++++++++++++////++++++++((((++++////++++++++++++++++////////++++++++++++++++////++++++++++++++++++++////++++++++++++++++////++++++++++++////++++++++((((((((++++////++++++++++++++++////////++++++++++++++++////++++++++++++++++++++////++++++++++++++++////++++++++++++////++++++++((((((((++++////++++++++++++++++////////++++++++++++++++////++++++++++++++++++++////++++++++++++++++////++++++++++++////++++++++((((((((++++////++++++++++++++++////////++++++++++++++++////++++++++++++++++++++////++++++++++++++++////++++++++++++////++++++++((((((((++++++++////++++++++////////++++((((++++++++++++++++////++++++++++++////++++++++++++((((++++++++////++++////++++++++((((((((((((++++++++////++++++++////////++++((((++++++++++++++++////++++++++++++////++++++++++++((((++++++++////++++////++++++++((((((((((((++++++++////++++++++////////++++((((++++++++++++++++////++++++++++++////++++++++++++((((++++++++////++++////++++++++((((((((((((++++++++////++++++++////////++++((((++++++++++++++++////++++++++++++////++++++++++++((((++++++++////++++////++++++++((((((((((((++++++++////++++////////++++((((((((((((((((((((++++++++////////////++++++++++++((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++////////++++((((((((((((((((((((++++++++////////////++++++++++++((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++////////++++((((((((((((((((((((++++++++////////////++++++++++++((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++////////++++((((((((((((((((((((++++++++////////////++++++++++++((((((((++++++++++++////++++++++((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((++++++++++++////++++++++++++((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((++++++++++++////++++++++++++((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((++++++++++++////++++++++++++((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((++++++++++++////++++++++++++((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++((((((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++((((((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++((((((((((((((((++++++++++++++++////++++++++((((((((((((((((((((((((((((++++++++////++++++++((((((((((((((((((((((((++++////++++((((((((((((((((++++++++++++++++++++////++++++++++++((((((((((((((((++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++++++////++++++++++++((((((((((((((((++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++++++////++++++++++++((((((((((((((((++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++++++////++++++++++++((((((((((((((((++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((++++++++++++++++++++////++++++++++++++++++++++++++++++++++++////////++++++++++++((((((((((((++++++++++++////++++((((((((((((++++++++++++++++++++++++////++++++++++++++++++++++++++++++++++++////////++++++++++++((((((((((((++++++++++++////++++((((((((((((++++++++++++++++++++++++////++++++++++++++++++++++++++++++++++++////////++++++++++++((((((((((((++++++++++++////++++((((((((((((++++++++++++++++++++++++////++++++++++++++++++++++++++++++++++++////////++++++++++++((((((((((((++++++++++++////++++((((((((((((++++++++++++////////////////////++++++++++++++++++++////////////////////////++++++++++++((((++++++++++++++++++++////((((((((++++++++++++++++////////////////////++++++++++++++++++++////////////////////////++++++++++++((((++++++++++++++++++++////((((((((++++++++++++++++////////////////////++++++++++++++++++++////////////////////////++++++++++++((((++++++++++++++++++++////((((((((++++++++++++++++////////////////////++++++++++++++++++++////////////////////////++++++++++++((((++++++++++++++++++++////((((((((++++++++////////++++++++++++++++++++////////////////////++++++++++++++++++++////++++++++++++++++++++++++++++////++++////++++++++////////////////++++++++++++++++++++////////////////////++++++++++++++++++++////++++++++++++++++++++++++++++////++++////++++++++////////////////++++++++++++++++++++////////////////////++++++++++++++++++++////++++++++++++++++++++++++++++////++++////++++++++////////////////++++++++++++++++++++////////////////////++++++++++++++++++++////++++++++++++++++++++++++++++////++++////++++++++////////++++++++++++((((((((++++++++////++++++++++++++++++++++++++++++++++++++++////++++++++++++++++++++////++++++++++++////////++++++++++++++++++++((((((((++++++++////++++++++++++++++++++++++++++++++++++++++////++++++++++++++++++++////++++++++++++////////++++++++++++++++++++((((((((++++++++////++++++++++++++++++++++++++++++++++++++++////++++++++++++++++++++////++++++++++++////////++++++++++++++++++++((((((((++++++++////++++++++++++++++++++++++++++++++++++++++////++++++++++++++++++++////++++++++++++////////++++++++((((((((((((((((((((((((++++////++++++++((((((((((((((((((((++++++++++++++++////++++////////////++++++++++++++++++++////++++++++((((((((((((((((((((((((++++////++++++++((((((((((((((((((((++++++++++++++++////++++////////////++++++++++++++++++++////++++++++((((((((((((((((((((((((++++////++++++++((((((((((((((((((((++++++++++++++++////++++////////////++++++++++++++++++++////++++++++((((((((((((((((((((((((++++////++++++++((((((((((((((((((((++++++++++++++++////++++////////////++++++++++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++++++++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++++++++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++++++++++++++++++////++++++++((((((((((((((((((((++++++++////++++((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++++++++++++++++++////++++++++++++((((++++++++++++++++++++////++++((((((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++((((((((++++////++++++++++++((((++++++++++++++++++++////++++((((((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++((((((((++++////++++++++++++((((++++++++++++++++++++////++++((((((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++((((((((++++////++++++++++++((((++++++++++++++++++++////++++((((((((((((((((((((((((((((((((++++++++++++++++////++++++++++++++++((((((((++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++////////////++++++++((((((((((((++++++++////++++////////////////////////////////++++++++++++++++++++++++++++++++++++////////////++++++++++++////++++++++((((((((((((++++////////////////////////////////////////++++++++++++++++++++++++++++++++++++////////////++++++++++++////++++++++((((((((((((++++////////////////////////////////////////++++++++++++++++++++++++++++++++++++////////////++++++++++++////++++++++((((((((((((++++////////////////////////////////////////++++++++++++++++++++++++++++++++++++////////////++++++++++++////++++++++((((((((((((++++////////++++////++++++++++++++++++++++++++++////////////////////////////////++++++++++++++++++++++++////++++++++((((((((((((++++++++++++++++////++++++++++++++++++++++++++++////////////////////////////////++++++++++++++++++++++++////++++++++((((((((((((++++++++++++++++////++++++++++++++++++++++++++++////////////////////////////////++++++++++++++++++++++++////++++++++((((((((((((++++++++++++++++////++++++++++++++++++++++++++++////////////////////////////////++++++++++++++++++++++++////++++++++((((((((((((++++++++++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((++++++++////++++++++((((((((++++++++++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((++++++++////++++++++((((((((++++++++++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((++++++++////++++++++((((((((++++++++++++////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++((((((((++++++++////++++++++((((((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++++++((((((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++++++((((((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++++++((((((((++++++++++++////++++++++++++((((((((((((((((((((((((((((((((++++++++++++////++++++++((((((((((((((((++++++++////++++++++((((((((++++++++++++